apply函數是一系列的,有些情況下可以用來取代for迴圈,做循環的動作,由於apply家族較為龐大,本篇只會介紹在資料分析中常用的幾種。
apply(): 第一種最基本的函數,也是最常見的,可以在matrix, dataframe等資料形態中使用,下方就來舉一個例子。
MARGIN表示要以行(填1)或列(填2)作計算標準,FUN代表要運算的函數,也可以自己定義# 小考分數
day9 = data.frame(
May_score = c(80, 93, 99, 69, 80),
Ann_score = c(85, 82, 95, 67, 70),
Jay_score = c(90, 78, 92, 62, 50)
)
# 原始資料呈現
day9
May_score Ann_score Jay_score
1 80 85 90
2 93 82 78
3 99 95 92
4 69 67 62
5 80 70 50
# 計算個人分數總合
apply(day9, 2, sum)
May_score Ann_score Jay_score
421 399 372
# 計算每次小考三人的平均分數
apply(day9,1,mean)
[1] 85.00000 84.33333 95.33333 66.00000 66.66667
lapply(): 可以在vector, list, dataframe等資料型態中使用,回傳的結果會是list且資料長度與輸入的資料相同
list
day9 = list(
May_score = c(80, 93, 99, 69, 80),
Ann_score = c(85, 82, 95, 67, 70),
Jay_score = c(90, 78, 92, 62, 50)
)
# 原始資料呈現
day9
$May_score
[1] 80 93 99 69 80
$Ann_score
[1] 85 82 95 67 70
$Jay_score
[1] 90 78 92 62 50
# 計算個人平均分數
lapply(day9, mean)
$May_score
[1] 84.2
$Ann_score
[1] 79.8
$Jay_score
[1] 74.4
sapply(): 可以在vector, list, dataframe等資料型態中使用,用法和lapply()相似,但是回傳的結果會是array型態,資料長度也與輸入的資料相同
array或matrix
list型態的資料,可以看到回傳結果為array
sapply(day9, mean)
May_score Ann_score Jay_score
84.2 79.8 74.4
apply函數系列其實還有很多,有興趣的人可再研究,這邊的介紹就告一段落了。
下一篇會開始介紹與dataframe處理有關的package